
import $store from '@/store/index.js'

/**
 * 
 * 1006成功，1007失败  ， 1003 重新登录
 * */
export default {
	// 全局配置
	common: {
		baseUrl: "https://zhenzhixiao.cn/",
		data: {},
		method: 'GET',
		get(url, data = {}, options = {}) {
			options.url = url
			options.data = data
			options.method = 'GET'
			return this.request(options)
		},
	},
	// 请求 返回promise
	request(options = {}) {
		// 组织参数
		options.url = this.common.baseUrl + options.url
		options.header = options.header || this.common.header
		options.data = options.data || this.common.data
		options.method = options.method || this.common.method
		options.dataType = options.dataType || this.common.dataType
		// 请求之前... todo
		// token
		if(options.token){
			options.data.token = $store.state.user.userInfo.token;
			options.data.user_id = $store.state.user.userInfo.user_id;
			// 二次验证
			if(options.checkToken && !options.data.token){
				uni.showToast({
					title: '请先登录',
					icon: 'none'
				});
				return uni.navigateTo({
					url: '/pages/login/login',
				});
			}
		}
	
		// 请求
		return new Promise((res, rej) => {
			// 请求中...
			uni.request({
				...options,
				success: (result) => {
					// 服务端失败
					if (result.data.result !== 1004) {
						// 判断支付接口  1006成功，1007失败
						if(result.data.result === 1006){
							let data = result.data.info
							return res(data)
						}
						// 判断订单列表 1004 成功  1005 为空
						if(result.data.result === 1005){
							let data ={error:true}
							return res(data)
						}
						// 判断订单列表 1003 重新登录
						if(result.data.result === 1003){
							console.log('需要退出登录')
							$store.commit('logout','')
							let data ={error:true}
							return res(data)
						}
						uni.showToast({
							title: result.data.msg || '服务端失败',
							icon: 'none'
						});
						//关闭全屏加载动画
						let returnData = {error:true}
						return res(returnData)
					}
					// 成功
					let data = result.data.info
					res(data)
				},
				fail: (error) => {
					console.log(error)
					uni.showToast({
						title: error.errMsg || '请求失败',
						icon: 'none'
					});
					return rej()
				}
			});
		})
	},
	// 请求 返回promise 短信接口
	requestDx(options = {}) {
		// 组织参数
		options.url = this.common.baseUrl + options.url
		options.header = options.header || this.common.header
		options.data = options.data || this.common.data
		options.method = options.method || this.common.method
		options.dataType = options.dataType || this.common.dataType
		// 请求
		return new Promise((res, rej) => {
			// 请求之前... todo
			// 请求中...
			uni.request({
				...options,
				success: (result) => {
					// 服务端失败
					if (result.data.result !== 1002) {
						uni.showToast({
							title: result.data.msg || '服务端失败',
							icon: 'none'
						});
						return rej()
					}
					// 成功
					let data = result.data
					res(data)
				},
				fail: (error) => {
					uni.showToast({
						title: error.errMsg || '请求失败',
						icon: 'none'
					});
					//延时关闭  加载中的 loading框
					uni.hideLoading();
					return rej()
				}
			});
		})
	},
	// 请求 返回promise 短信接口
	requestStatus(options = {}) {
		// 组织参数
		options.url = this.common.baseUrl + options.url
		options.header = options.header || this.common.header
		options.data = options.data || this.common.data
		options.method = options.method || this.common.method
		options.dataType = options.dataType || this.common.dataType
		// 请求之前... todo
		// token
		if(options.token){
			options.data.token = $store.state.user.userInfo.token;
			options.data.user_id = $store.state.user.userInfo.user_id;
			// 二次验证
			if(options.checkToken && !options.data.token){
				uni.showToast({
					title: '请先登录',
					icon: 'none'
				});
				return uni.navigateTo({
					url: '/pages/login/login',
				});
			}
		}
		// 请求
		return new Promise((res, rej) => {
			// 请求之前... todo
			// 请求中...
			uni.request({
				...options,
				success: (result) => {
					// 服务端失败
					if (result.data.result !== 1002) {
						uni.showToast({
							title: result.data.msg || '服务端失败',
							icon: 'none'
						});
						return rej()
					}
					// 成功
					let data = result.data
					res(data)
				},
				fail: (error) => {
					uni.showToast({
						title: error.errMsg || '请求失败',
						icon: 'none'
					});
					//延时关闭  加载中的 loading框
					uni.hideLoading();
					return rej()
				}
			});
		})
	},
	// get请求
	get(url, data = {}, options = {}) {
		options.url = url
		options.data = data
		options.method = 'GET'
		return this.request(options)
	},
	// post请求
	post(url, data = {}, options = {}) {
		options.url = url
		options.data = data
		options.method = 'POST'
		return this.request(options)
	},
	// post请求短信接口
	postDx(url, data = {}, options = {}) {
		options.url = url
		options.data = data
		options.method = 'POST'
		return this.requestDx(options)
	},
	// 修改状态 返回 1002
	postStatus(url, data = {}, options = {}) {
		options.url = url
		options.data = data
		options.method = 'POST'
		return this.requestStatus(options)
	},
}
